Access to storage resources using a virtual storage appliance

ABSTRACT

Methods and systems for improved access to storage resources include installing a virtual storage appliance as a virtual machine on a hypervisor. The virtual storage appliance installs itself as a virtual PCI-E device and communicates with guest operating systems of the hypervisor using direct memory access via a PCI-E non-transparent bridge. The storage virtual appliance provides access to local and external storage resources with very high performance to applications running under the guest operating system, thereby overcoming performance barriers associated with native hypervisor driver models.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation application of U.S. patentapplication Ser. No. 13/902,482 filed May 24, 2013, which isincorporated herein by reference in its entirety for all purposes.

BACKGROUND

Field of the Disclosure

This disclosure relates generally to virtualized information handlingsystems and more particularly to a system and method for improved accessto storage resources using a virtual storage appliance.

Description of the Related Art

As the value and use of information continues to increase, individualsand businesses seek additional ways to process and store information.One option available to users is information handling systems. Aninformation handling system generally processes, compiles, stores,and/or communicates information or data for business, personal, or otherpurposes thereby allowing users to take advantage of the value of theinformation. Because technology and information handling needs andrequirements vary between different users or applications, informationhandling systems may also vary regarding what information is handled,how the information is handled, how much information is processed,stored, or communicated, and how quickly and efficiently the informationmay be processed, stored, or communicated. The variations in informationhandling systems allow for information handling systems to be general orconfigured for a specific user or specific use such as financialtransaction processing, airline reservations, enterprise data storage,or global communications. In addition, information handling systems mayinclude a variety of hardware and software components that may beconfigured to process, store, and communicate information and mayinclude one or more computer systems, data storage systems, andnetworking systems.

Increasingly, information handling systems are deployed in architecturesthat allow multiple operating systems to run on a single informationhandling system. Labeled “virtualization,” this type of informationhandling system architecture decouples software from hardware andpresents a logical view of physical hardware to software. In avirtualized information handling system, a single physical server mayinstantiate multiple, independent virtual servers. Server virtualizationis enabled primarily by a piece of software (often referred to as a“hypervisor”) that provides a software layer between the server hardwareand the multiple operating systems, also referred to as guest operatingsystems (guest OS). The hypervisor software provides a container thatpresents a logical hardware interface to the guest operating systems. Anindividual guest OS, along with various applications or other softwareexecuting under the guest OS, may be unaware that execution is occurringin a virtualized server environment (as opposed to a dedicated physicalserver). Such an instance of a guest OS executing under a hypervisor maybe referred to as a “virtual machine”.

Often, virtualized architectures may be employed for numerous reasons,e.g., (1) increased hardware resource utilization; (2) cost-effectivescalability across a common, standards-based infrastructure; (3)workload portability across multiple servers; (4) streamlining ofapplication development by certifying to a common virtual interfacerather than multiple implementations of physical hardware; and/or (5)encapsulation of complex configurations into a file that is easilyreplicated and provisioned, among other reasons. As noted above, theinformation handling system may include one or more operating systems,for example, executing as guest operating systems in respective virtualmachines.

An operating system serves many functions, such as controlling access tohardware resources and controlling the execution of applicationsoftware. Operating systems also provide resources and services tosupport application software. These resources and services may includedata storage, support for at least one file system, a centralizedconfiguration database (such as the registry found in Microsoft Windowsoperating systems), a directory service, a graphical user interface, anetworking stack, device drivers, and device management software. Insome instances, services may be provided by other application softwarerunning on the information handling system, such as a database server.

The information handling system may include multiple processorsconnected to various devices, such as Peripheral Component Interconnect(“PCI”) devices and PCI express (“PCI-E”) devices. The operating systemmay include one or more drivers configured to facilitate the use of thedevices. As mentioned previously, the information handling system mayalso run one or more virtual machines, each of which may instantiate aguest operating system. Virtual machines may be managed by a virtualmachine manager, such as, for example, a hypervisor. Certain virtualmachines may be configured for device passthrough, such that the virtualmachine may utilize a physical device directly without requiring theintermediate use of operating system drivers.

Current information handling systems may benefit from increasedperformance of virtual machines as their utilization increases. Improvedperformance may also benefit systems where multiple virtual machinesoperate concurrently. Applications executing under a guest OS in avirtual machine may also have a need for higher performance from certaincomputing resources, such as storage resources.

SUMMARY

In one aspect, a disclosed method executed by at least one processorincludes loading a storage virtual appliance as a virtual machine on ahypervisor, wherein the storage virtual appliance is accessed by thehypervisor using a Peripheral Component Interconnect Express (PCI-E)device driver that supports direct memory access (DMA). The method mayinclude enabling, using the storage virtual appliance, a guest operatingsystem executing on the hypervisor access to storage resources, whereinthe storage virtual appliance communicates with the guest operatingsystem via direct memory access over a PCI-E non-transparent bridge

Other disclosed aspects include article of manufacture comprising anon-transitory computer-readable medium storing instructions executableby a processor subsystem, and an information handling system comprisinga processor subsystem having access to a memory subsystem storinginstructions executable by the processor subsystem.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of the present invention and itsfeatures and advantages, reference is now made to the followingdescription, taken in conjunction with the accompanying drawings, inwhich:

FIG. 1 is a block diagram of selected elements of an embodiment of aninformation handling system;

FIG. 2 is a block diagram of selected elements of an embodiment of aninformation handling system;

FIG. 3 is flowchart depicting selected elements of an embodiment of amethod for improved access to storage resources using a storage virtualappliance; and

FIG. 4 is flowchart depicting selected elements of an embodiment of amethod for improved access to storage resources using a storage virtualappliance.

DESCRIPTION OF PARTICULAR EMBODIMENT(S)

In the following description, details are set forth by way of example tofacilitate discussion of the disclosed subject matter. It should beapparent to a person of ordinary skill in the field, however, that thedisclosed embodiments are exemplary and not exhaustive of all possibleembodiments.

Throughout this disclosure, a hyphenated form of a reference numeralrefers to a specific instance of an element and the un-hyphenated formof the reference numeral refers to the element generically orcollectively. Thus, for example, widget 12-1 refers to an instance of awidget class, which may be referred to collectively as widgets 12 andany one of which may be referred to generically as a widget 12.

As noted previously, current virtual information handling systems maydemand higher performance from computing resources, such as storageresources used by applications executing under guest operating systems.Many virtualized server platforms may desire to provide storageresources to such applications in the form of software executing on thesame server where the applications are executing, which may offercertain advantages by bringing data closest to the application. Suchsoftware-defined storage may further enable new technologies, such as,but not limited to: (1) flash caches and cache networks using solidstate devices (SSD) to cache storage operations and data; (2) virtualstorage area networks (SAN); and (3) data tiering by storing data acrosslocal storage resources, SAN storage, and network storage, depending onI/O load and access patterns. Server virtualization has been a keyenabler of software-defined storage by enabling multiple workloads torun on a single physical machine. Such workloads also benefit byprovisioning storage resources closest to the application accessing datastored on the storage resources.

Storage software providing such functionality may interact with multiplelower level device drivers. For example: a layer on top of storagedevice drivers may provide access to server resident hard drives, flashSSD drives, non-volatile memory devices, and/or SAN storage usingvarious types of interconnect fabric, (i.e., iSCSI, Fibre Channel, FibreChannel over Ethernet, etc.). In another example, a layer on top ofnetwork drivers may provide access to storage software running on otherserver instances (i.e., access to a cloud). Such driver-basedimplementations have been challenging from the perspective of supportingmultiple hypervisors and delivering adequate performance. Certainhypervisors in use today may not support third-party development ofdrivers, which may preclude an architecture based on optimized filterdrivers in the hypervisor kernel. Other hypervisors may have differentI/O architectures and device driver models, which may present challengesto developing a unified storage software for various hypervisorplatforms.

Another solution is to implement the storage software as a virtualmachine with passthrough access to physical storage devices andresources. However, such a solution may face serious performance issueswhen communicating with applications executing on neighboring virtualmachines, due to low data throughput and high latency in the hypervisordriver stack. Thus, even though the underlying storage resources maydeliver substantially improved performance, such as flash caches andcache networks, the performance advantages may not be experienced byapplications in the guest OS using typical hypervisor driver stacks.

As will be described in further detail, the inventors of the presentdisclosure have developed novel methods and systems disclosed herein forimproving access to storage resources by using a storage virtualappliance that provides managed access to local and remote storageresources, while utilizing direct memory access (DMA) for storageoperations to and from a guest OS in a virtual information handlingsystem. Direct memory access involves the transfer of data to/fromsystem memory without significant involvement by a processor subsystem,thereby improving data throughput and reducing a workload of theprocessor subsystem.

For the purposes of this disclosure, an information handling system mayinclude an instrumentality or aggregate of instrumentalities operable tocompute, classify, process, transmit, receive, retrieve, originate,switch, store, display, manifest, detect, record, reproduce, handle, orutilize various forms of information, intelligence, or data forbusiness, scientific, control, entertainment, or other purposes. Forexample, an information handling system may be a personal computer, aPDA, a consumer electronic device, a network storage device, or anothersuitable device and may vary in size, shape, performance, functionality,and price. The information handling system may include memory, one ormore processing resources such as a central processing unit (CPU) orhardware or software control logic. Additional components or theinformation handling system may include one or more storage devices, oneor more communications ports for communicating with external devices aswell as various input and output (I/O) devices, such as a keyboard, amouse, and a video display. The information handling system may alsoinclude one or more buses operable to transmit communication between thevarious hardware components.

Additionally, the information handling system may include firmware forcontrolling and/or communicating with, for example, hard drives, networkcircuitry, memory devices, I/O devices, and other peripheral devices.For example, the hypervisor and/or the error detection system, bothdescribed more fully below, may comprise firmware. As used in thisdisclosure, firmware includes software embedded in an informationhandling system component used to perform predefined tasks. Firmware iscommonly stored in non-volatile memory, or memory that does not losestored data upon the loss of power. In certain embodiments, firmwareassociated with an information handling system component is stored innon-volatile memory that is accessible to one or more informationhandling system components. In the same or alternative embodiments,firmware associated with an information handling system component isstored in non-volatile memory that is dedicated to and comprises part ofthat component.

For the purposes of this disclosure, computer-readable media may includean instrumentality or aggregation of instrumentalities that may retaindata and/or instructions for a period of time. Computer-readable mediamay include, without limitation, storage media such as a direct accessstorage device (e.g., a hard disk drive or floppy disk), a sequentialaccess storage device (e.g., a tape disk drive), compact disk, CD-ROM,DVD, random access memory (RAM), read-only memory (ROM), electricallyerasable programmable read-only memory (EEPROM), and/or flash memory(SSD); as well as communications media such wires, optical fibers,microwaves, radio waves, and other electromagnetic and/or opticalcarriers; and/or any combination of the foregoing.

Particular embodiments are best understood by reference to FIGS. 1, 2,3, and 4 wherein like numbers are used to indicate like andcorresponding parts.

Turning now to the drawings, FIG. 1 illustrates a block diagramdepicting selected elements of an embodiment of system 100-1 forimproving access to storage resources using a storage virtual appliance,in accordance with the present disclosure. As depicted in FIG. 1, system100-1 may represent an information handling system comprising physicalhardware 102, executable instructions 180 (including hypervisor 104, oneor more virtual machines 105, and storage virtual appliance 110). Alsoshown with system 100-1 are external or remote elements, namely, network155 and network storage resource 170.

As shown in FIG. 1, components of physical hardware 102 may include, butare not limited to, processor subsystem 120, which may comprise one ormore processors, and system bus 121 that communicatively couples varioussystem components to processor subsystem 120 including, for example, amemory subsystem 130, an I/O subsystem 140, local storage resource 150,and a network interface 160. System bus 121 may represent a variety ofsuitable types of bus structures, e.g., a memory bus, a peripheral bus,or a local bus using various bus architectures in selected embodiments.For example, such architectures may include, but are not limited to,Micro Channel Architecture (MCA) bus, Industry Standard Architecture(ISA) bus, Enhanced ISA (EISA) bus, Peripheral Component Interconnect(PCI) bus, PCI-Express bus, HyperTransport (HT) bus, and VideoElectronics Standards Association (VESA) local bus.

In FIG. 1, network interface 160 may be a suitable system, apparatus, ordevice operable to serve as an interface between information handlingsystem 100-1 and a network 155. Network interface 160 may enableinformation handling system 100-1 to communicate over network 155 usinga suitable transmission protocol and/or standard, including, but notlimited to, transmission protocols and/or standards enumerated belowwith respect to the discussion of network 155. In some embodiments,network interface 160 may be communicatively coupled via network 155 tonetwork storage resource 170. Network 155 may be implemented as, or maybe a part of, a storage area network (SAN), personal area network (PAN),local area network (LAN), a metropolitan area network (MAN), a wide areanetwork (WAN), a wireless local area network (WLAN), a virtual privatenetwork (VPN), an intranet, the Internet or another appropriatearchitecture or system that facilitates the communication of signals,data and/or messages (generally referred to as data). Network 155 maytransmit data using a desired storage and/or communication protocol,including, but not limited to, Fibre Channel, Frame Relay, AsynchronousTransfer Mode (ATM), Internet protocol (IP), other packet-basedprotocol, small computer system interface (SCSI), Internet SCSI (iSCSI),Serial Attached SCSI (SAS) or another transport that operates with theSCSI protocol, advanced technology attachment (ATA), serial ATA (SATA),advanced technology attachment packet interface (ATAPI), serial storagearchitecture (SSA), integrated drive electronics (IDE), and/or anycombination thereof. Network 155 and its various components may beimplemented using hardware, software, or any combination thereof.

As depicted in FIG. 1, processor subsystem 120 may comprise a system,device, or apparatus operable to interpret and/or execute programinstructions and/or process data, and may include a microprocessor,microcontroller, digital signal processor (DSP), application specificintegrated circuit (ASIC), or another digital or analog circuitryconfigured to interpret and/or execute program instructions and/orprocess data. In some embodiments, processor subsystem 120 may interpretand/or execute program instructions and/or process data stored locally(e.g., in memory subsystem 130 and/or another component of physicalhardware 102). In the same or alternative embodiments, processorsubsystem 120 may interpret and/or execute program instructions and/orprocess data stored remotely (e.g., in network storage resource 170).

Also in FIG. 1, memory subsystem 130 may comprise a system, device, orapparatus operable to retain and/or retrieve program instructions and/ordata for a period of time (e.g., computer-readable media). Memorysubsystem 130 may comprise random access memory (RAM), electricallyerasable programmable read-only memory (EEPROM), a PCMCIA card, flashmemory, magnetic storage, opto-magnetic storage, and/or a suitableselection and/or array of volatile or non-volatile memory that retainsdata after power to its associated information handling system, such assystem 100-1, is powered down. Local storage resource 150 may comprisecomputer-readable media (e.g., hard disk drive, floppy disk drive,CD-ROM, and/or other type of rotating storage media, flash memory,EEPROM, and/or another type of solid state storage media) and may begenerally operable to store instructions and/or data. Likewise, networkstorage resource 170 may comprise computer-readable media (e.g., harddisk drive, floppy disk drive, CD-ROM, and/or other type of rotatingstorage media, flash memory, EEPROM, and/or other type of solid statestorage media) and may be generally operable to store instructionsand/or data. In system 100-1, I/O subsystem 140 may comprise a system,device, or apparatus generally operable to receive and/or transmit datato/from/within system 100-1. I/O subsystem 140 may represent, forexample, a variety of communication interfaces, graphics interfaces,video interfaces, user input interfaces, and/or peripheral interfaces.

In FIG. 1, hypervisor 104 may comprise software and/or firmwaregenerally operable to allow multiple operating systems to run on asingle information handling system at the same time. This operability isgenerally allowed via virtualization, a technique for hiding thephysical characteristics of information handling system resources fromthe way in which other systems, applications, or end users interact withthose resources. Hypervisor 104 may be one of a variety of proprietaryand/or commercially available virtualization platforms, including, butnot limited to, IBM's Z/VM, XEN, ORACLE VM, VMWARE's ESX SERVER, L4MICROKERNEL, TRANGO, MICROSOFT's HYPER-V, SUN's LOGICAL DOMAINS,HITACHI's VIRTAGE, KVM, VMWARE SERVER, VMWARE WORKSTATION, VMWAREFUSION, QEMU, MICROSOFT's VIRTUAL PC and VIRTUAL SERVER, INNOTEK'sVIRTUALBOX, and SWSOFT's PARALLELS WORKSTATION and PARALLELS DESKTOP. Inone embodiment, hypervisor 104 may comprise a specially designedoperating system (OS) with native virtualization capabilities. Inanother embodiment, hypervisor 104 may comprise a standard OS with anincorporated virtualization component for performing virtualization. Inanother embodiment, hypervisor 104 may comprise a standard OS runningalongside a separate virtualization application. In this embodiment, thevirtualization application of hypervisor 104 may be an applicationrunning above the OS and interacting with physical hardware 102 onlythrough the OS. Alternatively, the virtualization application ofhypervisor 104 may, on some levels, interact indirectly with physicalhardware 102 via the OS, and, on other levels, interact directly withphysical hardware 102 (e.g., similar to the way the OS interactsdirectly with physical hardware 102, and/or as firmware running onphysical hardware 102), also referred to as device passthrough, suchthat the virtual machine may utilize a physical device directly withoutrequiring the intermediate use of operating system drivers. As a furtheralternative, the virtualization application of hypervisor 104 may, onvarious levels, interact directly with physical hardware 102 (e.g.,similar to the way the OS interacts directly with physical hardware 102,and/or as firmware running on physical hardware 102) without utilizingthe OS, although still interacting with the OS to coordinate use ofphysical hardware 102.

As shown in FIG. 1, virtual machine 1 105-1 may represent a host forguest OS 108-1, while virtual machine 2 105-2 may represent a host forguest OS 108-2. To allow multiple operating systems to be executed onsystem 100-1 at the same time, hypervisor 104 may virtualize certainhardware resources of physical hardware 102 and present virtualizedcomputer hardware representations to each of virtual machines 105. Inother words, hypervisor 104 may assign to each of virtual machines 105,for example, one or more processors from processor subsystem 120, one ormore regions of memory in memory subsystem 130, one or more componentsof I/O subsystem 140, etc. The virtualized hardware representationpresented to each of virtual machines 105 may comprise a mutuallyexclusive, or non-overlapping, set of hardware resources per virtualmachine 105 (e.g., no hardware resources may be shared between virtualmachines 105) or may comprise an overlapping set of hardware resourcesper virtual machine 105 (e.g., one or more hardware resources may beshared by two or more virtual machines 105).

In one embodiment, hypervisor 104 may assign hardware resources ofphysical hardware 102 statically (i.e., certain hardware resources areassigned to certain virtual machines, and this assignment does not varyover time). Additionally or alternatively, hypervisor 104 may assignhardware resources of physical hardware 102 dynamically (i.e., theassignment of hardware resources to virtual machines varies over time,for example, in accordance with the specific needs of the applicationsrunning on the individual virtual machines). Additionally oralternatively, hypervisor 104 may keep track of thehardware-resource-to-virtual-machine mapping, such that hypervisor 104is able to determine the virtual machines to which a given hardwareresource of physical hardware 102 has been assigned.

In FIG. 1, Each of virtual machines 105 may respectively include guestoperating system (guest OS) 108, along with any applications or othersoftware (not shown) running on guest OS 108-110. Each guest OS 108-110may represent an OS compatible with and/or supported by hypervisor 104(even when guest OS is generally incompatible with physical hardware102). In addition, each guest OS 108 may be a separate instance of thesame operating system or an instance of three different operatingsystems. For example, in one embodiment, each guest OS 108 may comprisea LINUX OS. As another example, guest OS 108-1 may comprise a LINUX OS,guest OS 108-1 may comprise a MICROSOFT WINDOWS OS, and while anotherguest OS on another virtual machine (not shown) may comprise a VXWORKSOS. Although system 100-1 is depicted as having three virtual machines108-1, 108-2, and storage virtual appliance 110, it will be understoodthat, in particular embodiments, different numbers of virtual machinesmay be executing on information handling system 100 at any given time.

In FIG. 1, storage virtual appliance 110 may represent storage softwareexecuting on hypervisor 104. Although storage virtual appliance 110 maybe implemented as a virtual machine, and may execute in a similarenvironment and address space as described above with respect to virtualmachines 105, storage virtual appliance 110 may be dedicated toproviding access to storage resources to guest OS 108, and may notitself be a host for a guest OS. It will be understood that storagevirtual appliance 110 may include an embedded virtualized OS (not shown)similar to various implementations of guest OS 108 described previouslyherein. In particular, storage virtual appliance 110 may enjoypassthrough device access to various devices and interfaces foraccessing storage resources (local and/or remote) and may be enabled toprovide logical communication connections between desired storageresources and guest OS 108 using direct memory access for very high datathroughput rates and very low latency transfer operations, as describedherein.

In operation of system 100 shown in FIG. 1, hypervisor 104 ofinformation handling system 100 may virtualize the hardware resources ofphysical hardware 102 and present virtualized computer hardwarerepresentations to each of virtual machines 105. Each guest OS 108 ofvirtual machines 105 may then begin to operate and run applicationsand/or other software (not shown). While operating, each guest OS 108may utilize one or more hardware resources of physical hardware 102assigned to the respective virtual machine by hypervisor 104. Each guestOS 108 and/or application executing under guest OS 108 may be presentedwith storage resources that are managed by storage virtual appliance110. In other words, storage virtual appliance 110 may be enabled tomount and partition various combinations of physical storage resources,including local storage resources and remote storage resources, andpresent these physical storage resources as desired logical storagedevices for access by guest OS 108 (see also FIG. 2). In particular,storage virtual appliance 110 may be installed in hypervisor 104 as avirtual PCI-E device and may use a PCI-E non-transparent bridge (NTB)with direct memory access between two processors of processor subsystem120 to transfer data between guest OS 108 and the storage resourcesprovided by storage virtual appliance 110. In this manner, storagevirtual appliance 110 may overcome performance limitations otherwiseassociated with access to guest OS 108 under hypervisor 104. Also, thefeatures of storage virtual appliance 110 described herein may furtherallow for implementation in a manner that is independent, or largelyindependent, of any particular implementation of hypervisor 104.

Turning now to FIG. 2, a block diagram of selected elements of anembodiment of system 100-2 is illustrated. In FIG. 2, system 100-2 mayrepresent an information handling system that is an embodiment of system100-1 (see FIG. 1). As shown, system 100-2 includes further detailsregarding the operation and use of storage virtual appliance 110, whileother elements shown in system 100-1 have been omitted from FIG. 2 fordescriptive clarity. In FIG. 2, for example, virtual machine 105 andguest OS 108 are shown in singular, though they may represent any numberof instances of virtual machine 105 and guest OS 108.

In FIG. 2, virtual machine 105 is shown with access to virtual filesystem 210, which may be a file system provided by hypervisor 104, forexample, for access by guest OS 108. As shown, virtual file system 210may be equipped with SVA block driver 212 that is configured to accessstorage virtual appliance 110, as well as PCI-E stack 214 that enablesvirtual file system 210 to connect to PCI-E devices installed underhypervisor 104. Additionally, SVA block driver 212 may communicate withstorage virtual appliance 110 using PCI-E non-transparent bridge (NTB)220 using direct memory access (DMA). As noted previously, storagevirtual appliance 110 may be installed under hypervisor 104 as a virtualPCI-E device, and may accordingly also use PCI-E stack (virtual) 216 toaccess PCI-E NTB 220. In particular embodiments, PCI-E stack 214 andPCI-E stack (virtual) 216 may represent standard PCI-E driverinterfaces, such that from a perspective of hypervisor 104, storagevirtual appliance 110 appears as a PCI-E device.

As shown in FIG. 2, PCI-E NTB 220 may represent a non-transparent bridgewith a host on both sides of the bridge, shown as processor 1 120-1 andprocessor 2 120-2. Each host of PCI-E NTB 220 may have its ownindependent address domain, and may have visibility into a certainportion of the address domain of the other host. Each host may treat theother host as an endpoint of PCI-E NTB 220 and may map an addresssegment of the other host into its native memory space. In givenembodiments, storage virtual appliance 110 may represent one port at anendpoint of PCI-E NTB 220, while SVA block driver 212 may representanother port at another endpoint of PCI-E NTB 220.

Additionally, in the exemplary embodiment of FIG. 2, storage virtualappliance 110 is shown with passthrough access to remote direct memoryaccess (RDMA) 218, iSCSI/Fibre Channel (FC)/Ethernet 222, and/or flashSSD 224. For example, RDMA 218 and/or flash SSD 224 and/oriSCSI/FC/Ethernet 222 may participate in cache network 230, which may bea high performance network for caching storage operations and/or databetween a plurality of information handling systems (not shown), such assystem 100. As shown, iSCSI/FC/Ethernet 222 may also provide access tostorage area network (SAN) 240, which may include various externalstorage resources, such as network-accessible storage arrays.

Referring now to FIG. 3, a block diagram of selected elements of anembodiment of method 300 for a boot sequence for a storage virtualappliance on a hypervisor is depicted in flowchart form. Method 300 maybe performed using system 100 (see FIGS. 1 and 2) for example, by usinghypervisor 104 and storage virtual appliance 110. It is noted thatcertain operations described in method 300 may be optional or may berearranged in different embodiments.

In FIG. 3, method 300 may begin by loading and booting (operation 302) ahypervisor on a multiprocessor server system. The hypervisor mayinitialize (operation 304) PCI-E NTB ports between two processors of themultiprocessor server system. The hypervisor may load (operation 306) astorage virtual appliance (SVA) as a virtual machine. The storagevirtual appliance (operation 308) may install itself as a PCI-E deviceover NTB. The hypervisor may detect (operation 310) the storage virtualappliance as a PCI-E device. Thy hypervisor may then load (operation312) an SVA block device driver for the storage virtual appliance as aPCI-E device. The storage virtual appliance may be loaded as a virtualPCI-E device in a system address space of the hypervisor. The SVA blockdevice driver may be accessed by a virtual file system of thehypervisor. The SVA block device driver may discover (operation 312)storage resources made available by the storage virtual appliance andmay report (operation 312) the storage resources to a guest OS in avirtual machine instantiated by the hypervisor. In given embodiments,the storage resources may be reported as one or more logical drives tothe guest OS, which, in turn, may provide access to the logical drivesto applications executing under the guest OS. The storage resources maybe accessed (operation 316) by the guest OS via direct memory accessprovided by the PCI-E NTB to the storage virtual appliance

Referring now to FIG. 4, a block diagram of selected elements of anembodiment of method 400 for operation of a storage virtual applianceexecuting on a hypervisor is depicted in flowchart form. Method 400 maybe performed using system 100 (see FIGS. 1 and 2) for example, by usinghypervisor 104 and storage virtual appliance 110. It is noted thatcertain operations described in method 400 may be optional or may berearranged in different embodiments.

In FIG. 4, method 400 may begin by an application in a guest OS of ahypervisor requesting (operation 402) access to a storage resource madeavailable by a storage virtual appliance (SVA). The storage virtualappliance may be installed on the hypervisor according to method 300(see FIG. 3). An SVA block device driver may route (operation 404) anaccess request for the storage resource to the storage virtual appliancevia a PCI-E NTB port that uses direct memory access. The storage virtualappliance may open (operation 406) a logical connection between thestorage resource and the guest OS via the PCI-E NTB port. The logicalconnection may be to access a particular volume, directory, file, filesystem, and/or partition associated with the storage resource. Then, adata transfer operation associated with the access request may beperformed (operation 408) using direct memory access over the PCI-E NTBport using the logical connection.

As described in detail above, disclosed methods and systems for improvedaccess to storage resources include installing a virtual storageappliance as a virtual machine on a hypervisor. The virtual storageappliance installs itself as a virtual PCI-E device and communicateswith guest operating systems of the hypervisor using direct memoryaccess provided by a PCI-E non-transparent bridge (NTB). The storagevirtual appliance provides access to local and external storageresources with very high performance to applications running under theguest operating system, thereby overcoming performance barriersassociated with native hypervisor driver models.

The above disclosed subject matter is to be considered illustrative, andnot restrictive, and the appended claims are intended to cover all suchmodifications, enhancements, and other embodiments which fall within thetrue spirit and scope of the present disclosure. Thus, to the maximumextent allowed by law, the scope of the present disclosure is to bedetermined by the broadest permissible interpretation of the followingclaims and their equivalents, and shall not be restricted or limited bythe foregoing detailed description.

What is claimed is:
 1. A method executed by at least one processorcomprising: requesting access to storage resources by an applicationexecuting on an operating system; routing the request for access to astorage virtual appliance using a storage virtual appliance block devicedriver; opening a logical connection between the storage resources andthe operating system using a Peripheral Component Interconnect Express(PCI-E) non-transparent bridge (NTB); and enabling data to betransferred between the operating system and the storage resources usingdirect memory access (DMA) over the logical connection, wherein thestorage virtual appliance has access to a first port of the PCI-Enon-transparent bridge and the storage virtual appliance block devicedriver has access to a second port of the PCI-E non-transparent bridge.2. The method of claim 1, wherein the storage virtual appliance is avirtual PCI-E device in a system address space of a hypervisor.
 3. Themethod of claim 1, wherein the operating system executes on amultiprocessor system, and wherein the PCI-E non-transparent bridgespans across at least two processors in the multiprocessor system. 4.The method of claim 1, further comprising: discovering, at the storagevirtual appliance block device driver, the storage resources enabled foraccess by the storage virtual appliance, and reporting the storageresources to the operating system.
 5. The method of claim 1, wherein thestep of requesting access to storage resources further comprises aplurality of operating systems executing as respective virtual machinesunder a hypervisor requesting access to storage resources, and the stepof enabling data to be transferred further comprises enabling data to betransferred between the plurality of operating systems and the storageresources.
 6. The method of claim 1, wherein the storage resourcescomprise at least one of: a cache network shared among a plurality ofmultiprocessor servers; a storage area network; a flash memory solidstate device; and an array of storage devices.
 7. An article ofmanufacture comprising a non-transitory computer-readable medium storinginstructions, that, when executed by a processor subsystem, cause theprocessor subsystem to: request access to storage resources using anapplication on an operating system; route the request for access to astorage virtual appliance using a storage virtual appliance block devicedriver; open a logical connection between the storage resources and theoperating system using a Peripheral Component Interconnect Express(PCI-E) non-transparent bridge (NTB); and enable data to be transferredbetween the operating system and the storage resources using directmemory access (DMA) over the logical connection, wherein the storagevirtual appliance has access to a first port of the PCI-Enon-transparent bridge and the storage virtual appliance block devicedriver has access to a second port of the PCI-E non-transparent bridge.8. The article of manufacture in claim 7, wherein the storage virtualappliance is a virtual PCI-E device in a system address space of ahypervisor.
 9. The article of manufacture in claim 7, wherein theoperating system executes on a plurality of processors and the PCI-Enon-transparent bridge spans across at least two processors in theplurality of processors.
 10. The article of manufacture in claim 7,wherein the non-transitory computer-readable medium further storesinstructions that cause the processor subsystem to: discover, at thestorage virtual appliance device driver, the storage resources enabledfor access by the storage virtual appliance; and report the storageresources to the operating system.
 11. The article of manufacture inclaim 7, wherein the instructions that cause the processor subsystem torequest access to storage resources further causes the processorsubsystem to request access to the storage resources for a plurality ofoperating systems executing as respective virtual machines under ahypervisor, and wherein the instructions that cause the processorsubsystem to enable data to be transferred further causes the processorsubsystem to enable data to be transferred between the plurality ofoperating systems and the storage resources.
 12. The article ofmanufacture in claim 7, wherein the storage resources comprise at leastone of: a cache network shared among a plurality of multiprocessorservers; a storage area network; a flash memory solid state device(SSD); and an array of storage devices.
 13. The article of manufacturein claim 7, wherein the storage resources comprise a cache networkshared among a plurality of multiprocessor servers, wherein the cachenetwork is accessed using at least one of: a flash memory solid statedevice (SSD); remote direct memory access (RDMA); an internet smallcomputer system interface (iSCSI); a fibre channel (FC); and anethernet.
 14. An information handling system comprising: a processorsubsystem having access to a memory subsystem, wherein the memorysubsystem stores instructions executable by the processor subsystem,that, when executed by the processor subsystem, cause the processorsubsystem to: request access to storage resources using an applicationon an operating system; route the request for access to a storagevirtual appliance using a storage virtual appliance block device driver;open a logical connection between the storage resources and theoperating system using a Peripheral Component Interconnect Express(PCI-E) non-transparent bridge (NTB); and enable data to be transferredbetween the operating system and the storage resources using directmemory access (DMA) over the logical connection, wherein the storagevirtual appliance has access to a first port of the PCI-Enon-transparent bridge and the storage virtual appliance block devicedriver has access to a second port of the PCI-E non-transparent bridge.15. The information handling system of claim 14, wherein the storagevirtual appliance is a virtual PCI-E device in a system address space ofa hypervisor.
 16. The information handling system of claim 14, whereinthe operating system executes on a plurality of processors and the PCI-Enon-transparent bridge spans across at least two processors in theplurality of processors.
 17. The information handling system of claim14, wherein the memory subsystem further stores instructions that causethe processor subsystem to: discover, at the storage virtual appliancedevice driver, the storage resources enabled for access by the storagevirtual appliance; and report the storage resources to the operatingsystem.
 18. The information handling system of claim 14, wherein theinstructions that cause the processor subsystem to request access tostorage resources further causes the processor subsystem to requestaccess to the storage resources for a plurality of operating systemsexecuting as respective virtual machines under a hypervisor, and whereinthe instructions that cause the processor subsystem to enable data to betransferred further causes the processor subsystem to enable data to betransferred between the plurality of operating systems and the storageresources.
 19. The information handling system of claim 14, wherein thestorage resources comprise at least one of: a cache network shared amonga plurality of multiprocessor servers; a storage area network; a flashmemory solid state device (SSD); and an array of storage devices. 20.The information handling system of claim 14, wherein the storageresources comprise a cache network shared among a plurality ofmultiprocessor servers, wherein the cache network is accessed using atleast one of: a flash memory solid state device (SSD); remote directmemory access (RDMA); an internet small computer system interface(iSCSI); a fibre channel (FC); and an ethernet.